function deepClone1(target){
  let res = JSON.stringify(target)
  let ress = JSON.parse(res)
  return ress
}
function deepClone2(target){
  
  if(typeof target === 'object' && target !== 'null'){
    const result = Array.isArray(target) ? []:{}
    for(let key in target){
      if(target.hasOwnProperty(key)){
        result[key] = deepClone2(target[key])
      }
    }
    return result
  }else{
    return target
  }
  
}
function deepClone3(target,map=new Map()){
  if(typeof target === 'object' && target === 'null'){
    let cache = map.get(target)
    if(cache){
      return cache
    }
    const result = Array.isArray(target) ? []:{}
    map.set(target,result)
    for(let key in target){
      if(target.hasOwnProperty(key)){
        result[key] = deepClone2(target[key])
      }
    }
    return result
  }else{
    return target
  }
}